package qgs.zisu.javaconcurrency.javaconcurrency.chapter7_synchronized;

import org.omg.CORBA.PUBLIC_MEMBER;

/**
 * @Author: 蔡翔
 * @Date: 2019/10/19 21:24
 * @Version 1.0
 */
public class SynchronizedProblem {

    public static void main(String[] args) throws InterruptedException {
        new Thread("T1"){
            @Override
            public void run(){
                try {
                    SynchronizedProblem.work();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }.start();

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        //遇到问题：现在的一个情况就是 只有当t1线程调用work 方法完成后，t2才可能去执行work方法，否则不可能执行，就算t2被中断也不行(程序还在运行，还会尝试着去执行work)。
        Thread t2 = new Thread("T2"){
            @Override
            public void run(){
                try {
                    //t1 线程拿着锁不释放，我t2 是阻塞着的，也就是在等待队列中的。
                    SynchronizedProblem.work();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        };

        t2.start();
        Thread.sleep(2000);
        t2.interrupt();
        System.out.println(t2.isInterrupted());


    }
    private static void work(){
        System.out.println(Thread.currentThread().getName());
        while (true){
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
